<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <title>Layui数据服务平台</title>
    <link rel="stylesheet" href="layui/css/layui.css">
</head>
<body>
<div class="layui-layout layui-layout-admin">
    <div class="layui-header">
        <div class="layui-logo layui-hide-xs layui-bg-black">Layui数据服务平台</div>
        <!-- 头部区域（可配合layui 已有的水平导航） -->
        <ul class="layui-nav layui-layout-left">
            <!-- 移动端显示 -->
            <li class="layui-nav-item layui-show-xs-inline-block layui-hide-sm" lay-header-event="menuLeft">
                <i class="layui-icon layui-icon-spread-left"></i>
            </li>

            <li class="layui-nav-item layui-hide-xs"><a href="">nav 1</a></li>
            <li class="layui-nav-item layui-hide-xs"><a href="">nav 2</a></li>
            <li class="layui-nav-item layui-hide-xs"><a href="">nav 3</a></li>
            <li class="layui-nav-item">
                <a href="javascript:;">nav groups</a>
                <dl class="layui-nav-child">
                    <dd><a href="">menu 11</a></dd>
                    <dd><a href="">menu 22</a></dd>
                    <dd><a href="">menu 33</a></dd>
                </dl>
            </li>
        </ul>
        <ul class="layui-nav layui-layout-right">
            <li class="layui-nav-item layui-hide layui-show-md-inline-block">
                <a href="javascript:;">
                    <img src="//tva1.sinaimg.cn/crop.0.0.118.118.180/5db11ff4gw1e77d3nqrv8j203b03cweg.jpg" class="layui-nav-img">
                    tester
                </a>
                <dl class="layui-nav-child">
                    <dd><a href="">Your Profile</a></dd>
                    <dd><a href="">Settings</a></dd>
                    <dd><a href="">Sign out</a></dd>
                </dl>
            </li>
            <li class="layui-nav-item" lay-header-event="menuRight" lay-unselect>
                <a href="javascript:;">
                    <i class="layui-icon layui-icon-more-vertical"></i>
                </a>
            </li>
        </ul>
    </div>

    <div class="layui-side layui-bg-black">
        <div class="layui-side-scroll">
            <!-- 左侧导航区域（可配合layui已有的垂直导航） -->
            <ul class="layui-nav layui-nav-tree" lay-filter="test">
                <li class="layui-nav-item layui-nav-itemed">
                    <a class="" href="javascript:;">用户数据模块</a>
                    <dl class="layui-nav-child">
                        <dd><a href="userList.html">用户列表</a></dd>
                        <dd><a href="bm.html">部门列表</a></dd>
                        <dd><a href="zw.html">职位列表</a></dd>
                        <dd><a href="">the links</a></dd>
                    </dl>
                </li>
                <li class="layui-nav-item">
                    <a href="javascript:;">menu group 2</a>
                    <dl class="layui-nav-child">
                        <dd><a href="javascript:;">list 1</a></dd>
                        <dd><a href="javascript:;">list 2</a></dd>
                        <dd><a href="">超链接</a></dd>
                    </dl>
                </li>
                <li class="layui-nav-item"><a href="javascript:;">click menu item</a></li>
                <li class="layui-nav-item"><a href="">the links</a></li>
            </ul>
        </div>
    </div>

    <div class="layui-body">
        <table class="layui-hide" id="test" lay-filter="test"></table>

        <script type="text/html" id="toolbarDemo">
            <div class="layui-btn-container">
                <button class="layui-btn layui-btn-sm" lay-event="getCheckData">获取选中行数据</button>
                <button class="layui-btn layui-btn-sm" lay-event="getCheckLength">获取选中数目</button>
                <button class="layui-btn layui-btn-sm" lay-event="isAll">验证是否全选</button>
            </div>
        </script>

        <script type="text/html" id="barDemo"> <!-- 通过script定义的html代码，默认是隐藏的，只有在js调用渲染时，才会出现 -->
            <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
            <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
        </script>
    </div>

    <div class="layui-footer">
        <!-- 底部固定区域 -->
        底部固定区域
    </div>
</div>
<!--
   http://localhost:8080/
   实际上访问的是http://localhost:8080/index.html

   http://localhost:8080/layui.html
   http://localhost:8080/layui/layui.js
   如果是相对路径，最终的完整访问地址，就是以域名为前缀 http://localhost:8080

   如果我跳转一个绝对路径  /a.html  那么实际跳转的完整地址就是  http://localhost:8080/a.html

   补充知识：WEB-INF  是java项目中一个安全目录，它不能被HTML中任何的相对和绝对路径访问
                     它只支持java中的转发访问方式
-->
<script src="layui/layui.js"></script>
<script>
    layui.use('table', function(){
        var table = layui.table;

        // 绝对路径 必须严格按照定义时编写的路径名称一致  并且区分大小写
        // 接口服务几乎都是定义的绝对路径
        // 前端页面几乎都是定义的相对路径
        /*
           相对路径，首先拼接当前页面的前缀地址，再拼接相对路径地址，就是需要跳转的跳转
           例如：

                 a页面在  http://localhost:8080/a.html    在此页面定义了一个相对路径为  script src="layui/layui.js"
                 那么 这个js文件的真实地址就是  http://localhost:8080/layui/layui.js

                 a页面在  http://localhost:8080/x/a.html    在此页面定义了一个相对路径为 script src="layui/layui.js"
                 那么 这个js文件的真实地址就是  http://localhost:8080/x/layui/layui.js

                 a页面在  http://localhost:8080/x/a.html    在此页面定义了一个相对路径为  script src="./layui/layui.js"
                 那么 这个js文件的真实地址就是  http://localhost:8080/x/layui/layui.js

                 a页面在  http://localhost:8080/x/a.html    在此页面定义了一个相对路径为  script src="../layui/layui.js"
                 那么 这个js文件的真实地址就是  http://localhost:8080/layui/layui.js

                 a页面在  http://localhost:8080/x/y/a.html    在此页面定义了一个相对路径为  script src="../../layui/layui.js"
                 那么 这个js文件的真实地址就是  http://localhost:8080/layui/layui.js

                 在企业规范中，尽可能相对路径不要超过三层，这样可以提升可读性

                 a页面在  http://localhost:8080/x/y/a.html    在此页面定义了一个相对路径为  script src="../../../layui/layui.js"
                 那么 这个js文件的真实地址就是  http://layui/layui.js   这样的地址是会出错的

                 在前端页面中，绝对路径，都是从webapp开始计算
                 /index.html
                 /layui/layui.js

                 把webapp想象成 http://localhost:8080
         */
        table.render({
            elem: '#test'
            ,url:'/testJSON'         // 相对路径与绝对路径
            ,toolbar: '#toolbarDemo' //开启头部工具栏，并为其绑定左侧模板
            ,defaultToolbar: ['filter', 'exports', 'print', { //自定义头部工具栏右侧图标。如无需自定义，去除该参数即可
                title: '提示'
                ,layEvent: 'LAYTABLE_TIPS'
                ,icon: 'layui-icon-tips'
            }]
            ,title: '用户数据表'
            ,cols: [[
                {type: 'checkbox', fixed: 'left'}
                ,{title:'ID', width:80, templet: function(data){
                        return '<em>'+ data.id +'</em>'
                    }}
                ,{title:'用户名', width:120, templet: function(data){
                        return '<em>'+ data.username +'</em>'
                    }}
                ,{title:'邮箱', width:150, edit: 'text', templet: function(data){
                        return '<em>'+ data.email +'</em>'
                    }}
                ,{field:'sex', title:'性别', width:80, edit: 'text', sort: true}
                ,{field:'city', title:'城市', width:100}
                ,{field:'sign', title:'签名'}
                ,{field:'experience', title:'积分', width:80, sort: true}
                ,{field:'ip', title:'IP', width:120}
                ,{field:'logins', title:'登入次数', width:100, sort: true}
                ,{field:'joinTime', title:'加入时间', width:120}
                ,{fixed: 'right', title:'操作', toolbar: '#barDemo', width:150}
            ]]
            ,page: true
        });

        //头工具栏事件
        table.on('toolbar(test)', function(obj){
            var checkStatus = table.checkStatus(obj.config.id);
            switch(obj.event){
                case 'getCheckData':
                    var data = checkStatus.data;
                    // JSON.stringify(data);    // 它的作用是把一个对象(JSONObject   JSONArray)转成字符串形态
                    // JSON.parse("String");    // 把一个字符串转换成一个对象(JSONObject   JSONArray)
                    // 上述的两个方法，是隶属于JS原生的，不是LayUI，这两个方法如果转换的对象不是json类型的，那么会抛出错误
                    // layer.alert(JSON.stringify(data));
                    console.log(data);         // 此方法是把一个js中的对象或者字符串展示到页面的控制台中
                    break;
                case 'getCheckLength':
                    var data = checkStatus.data;
                    layer.msg('选中了：'+ data.length + ' 个');
                    break;
                case 'isAll':
                    layer.msg(checkStatus.isAll ? '全选': '未全选');
                    break;

                //自定义头工具栏右侧图标 - 提示
                case 'LAYTABLE_TIPS':
                    layer.alert('这是工具栏右侧自定义的一个图标按钮');
                    break;
            };
        });

        //监听行工具事件
        table.on('tool(test)', function(obj){
            var data = obj.data;
            //console.log(obj)
            if(obj.event === 'del'){
                layer.confirm('真的删除行么', function(index){
                    obj.del();
                    layer.close(index);
                });
            } else if(obj.event === 'edit'){
                layer.prompt({
                    formType: 2
                    ,value: data.email
                }, function(value, index){
                    obj.update({
                        email: value
                    });
                    layer.close(index);
                });
            }
        });
    });
</script>
</body>
</html>